The present invention relates to the field of sending control communications to devices within a network. More particularly, the present invention relates to the field of sending control communications to bridges within a network for effecting control and allocating resources along a communications route.
The IEEE Std 1394-1995 standard, xe2x80x9c1394 Standard For A High Performance Serial Bus,xe2x80x9d is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers. In addition, the IEEE Std 1394-1995 bus has a universal clock called the cycle timer. This clock is synchronized on all nodes. Isochronous data transfers are real-time transfers which take place based on the universal clock such that the time intervals between significant instances have the same duration at both the transmitting and receiving applications. Each packet of data transferred isochronously is transferred in its own time period. An example of an ideal application for the transfer of data isochronously would be from a video recorder to a television set. The video recorder records images and sounds and saves the data in discrete chunks or packets. The video recorder then transfers each packet, representing the image and sound recorded over a limited time period, during that time period, for display by the television set. The IEEE Std 1394-1995 standard bus architecture provides multiple independent channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure.
Asynchronous transfers are traditional reliable data transfer operations which take place as soon as arbitration is won and transfer a maximum amount of data from a source to a destination. Asynchronous transfers are used for control purposes, including the setup of isochronous communications.
The IEEE Std 1394-1995 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection. The IEEE Std 1394-1995 standard defines a digital interface for the application thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Correspondingly, a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data. The cable required by the IEEE Std 1394-1995 standard is very thin in size compared to other bulkier cables used to connect such devices in other connection schemes. Devices can be added and removed from an IEEE Std 1394-1995 bus while the bus is operational. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides in a standard address space, an identification ROM, a standardized set of control registers and in addition, its own address space.
The IEEE Std 1394-1995 standard defines a protocol as illustrated in FIG. 1. This protocol includes a serial bus management block 10 coupled to a transaction layer 12, a link layer 14 and a physical layer 16. The physical layer 16 provides the electrical and mechanical connection between a device or application and the IEEE Std 1394-1995 cable. The physical layer 16 also provides arbitration to ensure that all devices coupled to the IEEE Std 1394-1995 bus have access to the bus as well as actual data transmission and reception. The link layer 14 provides data packet delivery service for both asynchronous and isochronous data packet transport. This supports both asynchronous data transport, using an acknowledgement protocol, and isochronous data transport, providing real-time guaranteed bandwidth protocol for just-in-time data delivery. The transaction layer 12 supports the commands necessary to complete asynchronous data transfers, including read, write and lock. The serial bus management block 10 contains an isochronous resource manager for managing isochronous data transfers. The serial bus management block 10 also provides overall configuration control of the serial bus in the form of optimizing arbitration timing, guarantee of adequate electrical power for all devices on the bus, assignment of the cycle master, assignment of isochronous channel and bandwidth resources and basic notification of errors.
IEC-61883 is a ratified international standard for the transport of audio/video command requests and responses. This standard uses the concept of plugs and plug control registers to manage and control the attributes of isochronous data flows. It should be noted that plugs do not physically exist on an audio/video device, but a plug is used to establish an analogy with existing audio/video devices where each flow of information is routed through a physical plug.
An isochronous data flow flows from one transmitting device to one or more receiving devices, by transmitting isochronous packets on an isochronous channel of the IEEE Std 1394-1995 serial bus. Each isochronous data flow is transmitted to an isochronous channel through one output plug on the transmitting device and is received from that isochronous channel through one input plug on the receiving device.
The transmission of an isochronous data flow through an output plug is controlled by an output plug control register (oPCR) and an output master plug register (oMPR) located on the transmitting device. The output master plug register controls all attributes that are common to all isochronous data flows transmitted by the corresponding transmitting device. The output plug control register controls all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows transmitted by the transmitting device.
The reception of an isochronous data flow through an input plug is controlled by an input plug control register (iPCR) and an input master plug register (iMPR) located on the receiving device. The input master plug register controls all attributes that are common to all isochronous data flows received by the receiving device. The input plug control register controls all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows received by the receiving device.
An isochronous data flow can be controlled by any device connected to the IEEE Std 1394-1995 bus by modifying the corresponding plug control registers. Plug control registers can be modified through asynchronous transactions on the IEEE Std 1394-1995 bus or by internal modifications if the plug control registers are located on the controlling device.
To transport isochronous data between two audio/video devices on the IEEE Std 1394-1995 bus, it is necessary for an application to connect an output plug on the transmitting device to an input plug on the receiving device using an isochronous channel. The relationship between one input plug, one output plug and one isochronous channel is called a point-to-point connection. A point-to-point connection can only be broken by the application or initiating device that established it. An application can also just start the transmission or reception of an isochronous data flow on its own device by connecting one of its output or input plugs respectively to an isochronous channel. The relationship between one output plug and one isochronous channel is called a broadcast-out connection. The relationship between one input plug and one isochronous channel is called a broadcast-in connection. Broadcast-out and broadcast-in connections are collectively called broadcast connections. A broadcast connection can be established only by the device on which the plug is located, but it can be broken by any device.
The IEEE working group, xe2x80x9cp1394.1 Draft standard for High Performance Serial Bus Bridgesxe2x80x9d, is a working group draft related to the IEEE Std 1394-1995 standard for implementing bus bridges between multiple IEEE Std 1394-1995 buses. Bridges within a net of multiple buses of devices forward request and response subactions from one bus to another, allowing transaction requester and responder components to be located on different buses.
An exemplary IEEE Std 1394-1995 network of three buses of devices is illustrated in FIG. 2. The first bus includes the devices a1, a2, and a3 coupled together by IEEE Std 1394-1995 cables. Specifically, the device a1 is coupled to the device a2 by the IEEE Std 1394-1995 cable 40. The device a2 is coupled to the device a3 by the IEEE Std 1394-1995 cable 42. The device a3 is then coupled to a first portal 22 of the bridge 20.
The bridge 20 couples the first bus to a second bus which includes the devices b1, b2 and b3. A second portal 24 of the bridge 20 is coupled to the device b1 by the IEEE Std 1394-1995 cable 46. The device b1 is coupled to the device b2 by the IEEE Std 1394-1995 cable 48. The device b1 is coupled to the device b2 by the IEEE Std 1394-1995 cable 48. The device b2 is coupled to the device b3 by the IEEE Std 1394-1995 cable 50. The device b3 is coupled to a first portal 32 of the bridge 30. The bridge 30 couples the second bus to a third bus which includes the devices c1 and c2. A second portal 34 of the bridge 30 is coupled to the device c1 by the IEEE Std 1394-1995 cable 54. The device c1 is coupled to the device c2 by the IEEE Std 1394-1995 cable 56.
The bridges 20 and 30 allow devices on the different buses to communicate with each 30 other using both asynchronous and isochronous communications. For example, if the device a1 sends a communication to the device b3, the communication is passed along the first bus until it reaches the portal 22 of the bridge 20. The bridge 20 then recognizes that the communication is addressed to the device b3 and forwards the communication from the portal 22 to the portal 24.
The communication is then passed along the second bus until it arrives at the device b3.
The components within a bridge device are illustrated in FIG. 3. The bridge device 60 includes asynchronous request and response queues and isochronous data and isochronous queues for each portal. The bridge 60 also includes a microprocessor device 70. The queues within the bridge 60 hold packets received on one bus but not yet transmitted to the adjacent bus. The asynchronous request queue 62 holds request and asynchronous-stream packets. The asynchronous response queue 64 holds response packets.
Isochronous packets received in cycle (n) are forwarded to the adjacent bus in cycle (n+K), where k is an implementation-dependent constant, using the isochronous data queue 66 and the isochronous clock queue 68. The isochronous data queue 66 holds isochronous packets which are selectively forwarded based on their channel number. The isochronous clock queue 68 holds the clock synchronization reference information which is forwarded from the primary bus outward and used to calibrate the clock on each bus. The request response, isochronous data and isochronous clock queues may be implemented as separate physical queues, or independently managed portions of a larger shared memory.
The bridge 60 also includes routing tables to determine which packets are forwarded to an adjacent bus. For asynchronous routing, the bridge 60 includes a bit-mapped table which specifies which packets are forwarded to the adjacent bus. For isochronous routing, the bridge 60 includes a table which specifies properties of an isochronous channel including whether the isochronous channel is forwarded to the adjacent bus, the channel number to be used on the adjacent bus and the speed to be used on the adjacent bus.
The bridge 60 also includes message mailbox locations to access low-band width facilities including initialization and isochronous management. The initialization protocols are responsible for each buses"" assigned net-unique bus ID address and bridge routing which utilizes routing tables set to enable asynchronous subaction routing. The messages within the message mailbox are used to manage isochronous resource allocations.
Within the bridge 60, directed-asynchronous routing decisions are made using the destination ID addresses of packets being passed through the bridge 60. Accepted packets are directly routed to the opposing part of the bridge 60. This destination routing is based on a bus ID routing table. In the most general case, one or more routing bits can be independently specified for each of the 1024 possible bus numbers.
An isochronous connection between a talker device and listener device is incrementally formed in the talker-to-listener direction. The portal of the bridge coupled to the talker device, on the routing path, is first directed to establish the appropriate talker bus connections by an initiation message sent from a controlling device to this portal. This portal then acquires the necessary isochronous resources on the talker device""s local bus, sends a query transaction to discover next-path identifiers and sends confirmation to the controlling device which includes the next-path identifiers.
The controlling device then sends an initiation message to each bridge within the route between the talker device and the listener device, in turn. Each bridge along the route upon receiving the initiation message from the controlling device then acquires the necessary isochronous resources on the corresponding bus in the route, sends a query transaction to discover next-path identifiers and sends a confirmation to the controlling device which includes the next-path identifiers. This continues until all bridges in the route between the talker device and the listener device have acquired the necessary isochronous resources on each of the buses within the route.
In the manner described above, the isochronous connection between a talker device and a listener device is established by a controlling device. To establish this isochronous connection and have the necessary resources allocated, the controlling device communicates with each bridge within the route between the talker device and the listener device. This consumes significant resources of both the controlling device and each bridge and bus within the route between the talker device and the listener device.
An asynchronous control mechanism packet is used to send control messages and information to one or more bridge devices within a network of buses of devices. The asynchronous control mechanism packet is addressed to a device on one of the buses and is intercepted by one of the appropriate bridge devices along the path to the destination device. The asynchronous control mechanism packet is targeted at a particular bridge device or used to send control messages and information to bridge devices along a particular communications route between two devices. The asynchronous control mechanism packet includes a designation specifying that it is an asynchronous control mechanism packet and should be treated accordingly, and an indication of whether the packet should be processed by the first of the last portal between the source and destination buses.
This designation is recognized by the appropriate bridge devices. Preferably, this designation is included within the extended transaction code field of the packet. In an alternate embodiment, the designation is included within a transaction code field of the packet. In a further alternate embodiment, the designation is included within an address offset value within the packet. Instructional information within the asynchronous control mechanism packet specifies to intercepting bridge devices the type of transaction and control tasks to be performed by the bridge device when the asynchronous control mechanism packet is received.
In one aspect of the present invention, an asynchronous control mechanism packet includes an address value corresponding to a target device on a target bus, a designation and instructional information, wherein the designation within the asynchronous control mechanism packet causes a bridge device coupled to the target device and the target bus to intercept the packet and utilize the instructional information to perform one or more control tasks specified by the designation and the instructional information. The designation is preferably included within an extended transaction code field within the asynchronous control mechanism packet. Alternatively, the designation is included within a transaction code field within the asynchronous control mechanism packet. In a further alternative embodiment, designation is included within an address offset value within the asynchronous control mechanism packet. The instructional information specifies a type of transaction and the control tasks to be performed. The asynchronous control mechanism packet is not forwarded to the target device. The designation and instructional information instruct the bridge device to establish an isochronous connection between a talker device and a listener device. Each bridge device within a route between the talker device and the listener device intercept the asynchronous control mechanism packet and allocate resources necessary to establish the isochronous connection between the talker device and the listener device. The talker device and the listener device are preferably coupled within a network of buses that substantially complies with a version of an IEEE Std 1394 standard.
In another aspect of the present invention, a method of effecting control of a bridge device coupled to a target device on a target bus includes the steps of sending an asynchronous control mechanism packet directed to the target device which includes an address value corresponding to the target device, a designation and instructional information, receiving the asynchronous control mechanism packet at the bridge device and utilizing the instructional information to perform one or more control tasks specified by the designation and the instructional information. The asynchronous control mechanism packet is not forwarded to the target device. The designation is preferably included within an extended transaction code field within the asynchronous control mechanism packet. Alternatively, the designation is included within a transaction code field within the asynchronous control mechanism packet. In a further alternative embodiment, the designation is included within an address offset value within the asynchronous control mechanism packet. In one application, the step of utilizing establishes an isochronous connection between a talker device and a listener device. The steps of sending, receiving and utilizing are performed by each bridge device within a route between the talker device and the listener device and further wherein each of the bridge devices within the route allocate resources necessary to establish the isochronous connection between the talker device and the listener device. The talker device and the listener device are preferably coupled within a network of buses that substantially complies with a version of an IEEE Std 1394 standard.
In yet another aspect of the present invention, a method of establishing an isochronous connection between a talker device and a listener device within a network of buses. The bridge devices are coupled between buses within the network of buses. The method includes the steps of sending an asynchronous control mechanism packet from an initiating device directed to a selected one of the talker device and the listener devices. The asynchronous control mechanism packet includes an address value corresponding to the selected one of the talker devices and the listener devices and a designation specifying that the packet is an asynchronous control mechanism packet, and then receiving the asynchronous control mechanism packet at a current bridge device within the route between the talker device and the listener device. At that bridge allocating resources necessary to establish the isochronous connection between the talker device and the listener device. Determining if the current bridge device is a final bridge device within the route, passing the asynchronous control mechanism packet on to a next bridge device and repeating the steps of receiving the asynchronous control mechanism packet, allocating resources and determining if the current bridge device is a final bridge device within the route. If it is determined that the current bridge device is not the final bridge device within the route, and sending a control message to the initiating device if it is determined that the current bridge device is the final bridge device within the route. None of the asynchronous control mechanism packets are forwarded to the selected one of the talker device and the listener device. The designation is preferably included within an extended transaction code field within the asynchronous control mechanism packet. Alternatively, the designation is included within a transaction code field within the asynchronous control mechanism packet. In a further alternative embodiment, the designation is included within an address offset value within the asynchronous control mechanism packet. The network of buses preferably substantially complies with a version of an IEEE Std 1394 standard.
In still yet another aspect of the present invention, a bridge device configured for coupling between two or more buses of devices includes a first portal interface configured for coupling to and communicating with a first bus of devices, a second portal interface configured for coupling to and communicating with a second bus of devices and a detecting and control circuit coupled to the first portal interface and the second portal interface for detecting when the first portal interface and the second portal interface receive an asynchronous control mechanism packet directed to a target device, wherein the asynchronous control mechanism packet includes an address value corresponding to the target device, a designation and instructional information and further wherein the detecting and control circuit performs one or more control tasks specified by the designation and the instructional information. The designation is preferably included within an extended transaction code field within the asynchronous control mechanism packet. Alternatively, the designation is included within a transaction code field within the asynchronous control mechanism packet. In a further alternative embodiment, the designation is included within an address offset value within the asynchronous control mechanism packet. The one or more control tasks performed by the detecting and control circuit establish an isochronous connection between a talker device and a listener device. The bridge device and the two or more buses preferably substantially comply with a version of an IEEE Std 1394 standard.
In yet another aspect of the present invention, a network of devices coupled together by two or more buses, wherein bridge devices within the network couple different buses of devices to each other, each of the bridge devices include a first portal interface configured for coupling to and communicating with a first bus of devices, a second portal interface configured for coupling to and communicating with a second bus of devices and a detecting and control circuit coupled to the first portal interface and the second portal interface for detecting when the first portal interface and the second portal interface receive an asynchronous control mechanism packet directed to a target device, wherein the asynchronous control mechanism packet includes an address value corresponding to the target device, a designation and instructional information and further wherein the detecting and control circuit performs one or more control tasks specified by the designation and the instructional information. The designation is preferably included within an extended transaction code field within the asynchronous control mechanism packet. Alternatively, the designation is included within a transaction code field within the asynchronous control mechanism packet. In a further alternative embodiment, the designation is included within an address offset value within the asynchronous control mechanism packet. The one or more control tasks performed by the detecting and control circuit establish an isochronous connection between a talker device and a listener device. The network of devices preferably substantially complies with a version of an IEEE Std 1394 standard.